package juego.arma;

import juego.tipos.*;
import juego.movil.aeronave.AvionDeCombate;
import juego.movil.Bala;
import juego.Constantes;
import juego.Cielo;

public class Arma{
	protected int disparos;
	protected Poder poder;
	protected double velocidadDisparo; //Solo el modulo de la velocidad con la cual disparara.

	public Arma(){};

	public Arma(int cantidadDisparos, Poder poderDeDisparo, double velocidadDelDisparo){
		this.setDisparos(cantidadDisparos);
		poder = poderDeDisparo.copiar();
		velocidadDisparo = velocidadDelDisparo;
		
	}	

	public void disparosAgregar(int cantidadAAgregar){
		disparos = disparos + cantidadAAgregar;
	}

	public void disparosDescontar(int cantidadADescontar){
		disparos = disparos - cantidadADescontar;
		if ( disparos < 0){
			disparos = 0;
		}
	}
	
	public int getDisparos(){
		return disparos;
	}

	public void setDisparos(int cantidadDisparos){	
		disparos = cantidadDisparos;
	}

	public void combinar(Arma otroArma){
		this.disparosAgregar(otroArma.getDisparos());
	}

	public void disparar(AvionDeCombate avionDeOrigen){
		if(disparos == 0)return;
		
		Cielo cielo = Cielo.getInstancia();
		Velocidad velocidadDeBala;
		Posicion posicion = avionDeOrigen.getPosicion();
		Posicion posicionObjetivo = avionDeOrigen.getPosicionEnemigo();
		
		velocidadDeBala = new Velocidad(posicion.dirigidoA(posicionObjetivo),velocidadDisparo);	
		Bala bala = new Bala(poder,velocidadDeBala,posicion,avionDeOrigen.getClasificacionAtaque());
		cielo.agregar(bala);
		this.disparosDescontar(1);	
		
		}
}

